﻿// owner 蒋家伟
#pragma once
#include "Correspond_home.h"
#include "WeakReference.h"

class QByteArray;
namespace jsdk
{
    // 这是一个比较特殊handler，没有直接继承IHandler。
    class CORRESPOND_EXPORT ISerialPortEventHandler : public WeakReference
    {
    public:
        virtual ~ISerialPortEventHandler() {};

    public:
        /// \ 连接后会调用
        /// \ in success true表示链接成功，false表示连接失败
        virtual void connected(bool success) const = 0;

        /// \ 触发了串口错误信息会调用此接口
        /// \ in errorCode 错误码, 本质上等于 enum QSerialPort::SerialPortError
        virtual void serialPortError(int64_t errorCode) const = 0;

        /// \ 数据发送后会调用此接口做反馈
        /// \ in success 为true表示消息发送成功
        virtual void sendMessageFeedback(bool success) = 0;

        /// \ 收到消息后会把数据发送过来，在当前串口所在的独立线程中
        /// \ in msgArray 当前收到的信息数据
        virtual void recvMessage(QByteArray&& msgArray) = 0;
    };
}